Amazon Connect の緊急管理者ログイン(Emergency access)を制限してみる
こんにちは、AWS事業本部の平木です!
皆さんは Amazon Connect を使用していますか?
クラウド型コンタクトセンターサービスである Amazon Connect は、
Amazon Connect 用のコンソールがあり、AWS アカウントの認証情報とは別の認証情報を使用し、
Amazon Connect コンソールへログインできます。
また、緊急時に AWS アカウントの認証情報を使用して Amazon Connect コンソールへログインできる
緊急管理者ログイン(Emergency access) の機能があります。
今回は、この Emergency access の実行を制限してみたいと思います。
いきなり結論
Emergency access の実行を制限するには、
IAMポリシーにてconnect:GetFederationTokens
のアクションを許可または拒否することで、
Emergency access の操作を制限できます。
Emergency access とは
Emergency access とは冒頭でもご説明しました通り、
緊急時に AWS アカウントの認証情報を使用して Amazon Connect コンソールへログインできる機能です。
通常、 Amazon Connect コンソールへログインするには、
https://{instance name}.my.connect.aws/
の形式のURLから下記のようなログイン画面より各ユーザの認証情報を使用してアクセスします。
しかし下記のようなケースの場合、 Amazon Connect コンソールへのアクセスに問題が発生します。
- Amazon Connect 管理者パスワードを忘れてしまい、リセットする他の Amazon Connect 管理者がいない場合。
- 誰かが誤って Amazon Connect 管理者 セキュリティプロファイルを削除した場合。
このような場合の解決法として利用する機能が Emergency access です。
AWS コンソール画面にて Amazon Connect の対象インスタンスの概要を確認すると、
Emergency access という項目があることが分かります。
下のLog in for emergency access
をクリックするとAWS アカウントの認証情報を使用して Amazon Connect コンソールへログインできます。
Emergency access に使用される API を確認する
まずどの API が使用されているか確認するため ReadOnly 権限でアクセスを試みます。
アクセスを試みると、下記のようなエラーメッセージが確認できました。
(原文)
アクセスが拒否されました
Your access is being denied because you do not have full permission to perform the federation. Please find out the required permission for federation in the document Required permissions for using custom IAM policies to manage access to the Amazon Connect console - Amazon Connect. After adding the permission listed in the document, please retry the request.If the problem persists, please contact サポート. We apologize for the inconvenience. Click here to visit our home page.
(日本語訳 Deepl翻訳)
アクセスが拒否されました
フェデレーションを実行するための完全な権限がないため、アクセスが拒否されています。フェデレーションに必要なパーミッションは、ドキュメント「Required permissions for using custom IAM policies to manage access to the Amazon Connect console」でご確認ください。ドキュメントに記載されている権限を追加した後、リクエストを再試行してください。問題が解決しない場合は、サポートにお問い合わせください。ご不便をおかけして申し訳ございません。ホームページはこちら
このようなエラーからフェデレーションに関する権限がないことが分かります。
ドキュメントへの誘導もあるため確認すると、ドキュメントの最下部に下記記載があることが分かります。
したがって、IAMポリシーにてconnect:GetFederationTokens
のアクションを許可または拒否することで制御できます。
Appendix
特定の IAM ロールを使用したセッションまたは、使用する IAM ユーザによって
Emergency access の実行可否を決めたい場合には、Conditionを使用することで柔軟に制御可能です。
特定の IAM ロールを使用したセッションに制限したい例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyEmergencyAccess", "Effect": "Deny", "Action": "connect:GetFederationTokens", "Resource": "*", "Condition": { "StringNotLike": { "aws:userid": "AROAxxxxxxxxxxxxxxVAI:*" } } } ] }
aws:userid
を確認するには下記コマンドの結果から分かります。
aws iam get-role --role-name {IAMロール名}
特定の IAM ユーザを使用したセッションに制限したい例
{ "Version": "2012-10-17", "Statement": [ { "Sid": "DenyEmergencyAccess", "Effect": "Deny", "Action": "connect:GetFederationTokens", "Resource": "*", "Condition": { "StringNotLike": { "aws:username": "{IAMユーザ名}" } } } ] }
参考
- 緊急管理者ログイン - Amazon Connect
- カスタム IAM ポリシーを使用して Amazon Connect コンソールへのアクセスを管理するために必要なアクセス許可 - Amazon Connect
終わりに
今回は、Amazon Connect の緊急管理者ログイン(Emergency access)を制限してみました!
万が一の緊急のアクセス経路として機能があるのは助かる反面、
Amazon Connect コンソールの認証情報をスキップできることから、AWSアカウント側でも制御しておきたいと思われるシチュエーションもあるかもしれません。
Emergency access は、緊急時に使用するもののためここへ制限をかけてしまう場合、運用上支障をきたす可能性があります。
実環境へ適用する場合には、慎重に検討および検証をし、実装してください。
この記事がどなたかの役に立てば嬉しいです。